package Testing;

public class Test8 {
    public static void main(String[] args) {
        /*
        某系统的密码>0。比如1983，采取加密方式进行传输，
        规则如下：
        每位+5，在对10取余，最后将所有数字进行反转，得到一串新的数。
        按照以上规则进行解密：比如1983加密得到8346，解密后变成1983
         */
   //1.定义数组记录加密后的结果
        int []arr={8,3,4,6};
        //2.进行反转
        for (int i = 0,j= arr.length-1; i < j; i++,j--) {
            int temp=arr[i];
            arr[i]=arr[j];
            arr[j]=temp;
        }
        //        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
//        }验证反转结果是否正确
        //分析对10取余这一步，6可以是16，26，36
        //所以结合第一步+-5的操作
        //易知，一个数拆分后范围0~9，＋5得到5~14，取余5~9还是5~9，10~14得到的是0~4
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>=0&&arr[i]<=4){
                //分类讨论，由上述可知
                arr[i]=arr[i]+10;
            }
        }
//        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
//        }验证取余这一步操作是否可以复原正确
        for (int i = 0; i < arr.length; i++) {
            arr[i]=arr[i]-5;
        }
        int orin_Num=0;
        for (int i = 0; i < arr.length; i++) {
            orin_Num=orin_Num*10+arr[i];
        }
        System.out.println("解密后的结果："+orin_Num);
    }
}
